import serial
import threading
import time

def send_data(ser):
    """
    每秒发送一次数据的函数
    """
    while True:
        ser.write(b'Hello, Serial Port!\n')
        print("发送数据: Hello, Serial Port!")
        time.sleep(1)  # 每次发送数据持续1秒

def start_sending(ser):
    """
    定时器函数，每隔2秒开始发送一次数据
    """
    while True:
        timer = threading.Timer(0, send_data, [ser])
        timer.start()
        timer.join()  # 等待发送完成
        time.sleep(2)  # 等待2秒再发送下一次

def main():
    try:
        # 打开串口
        ser = serial.Serial(
            port='COM19',  # 根据实际的端口修改
            baudrate=1000000,      # 设置波特率为1M
            bytesize=serial.EIGHTBITS,  # 数据位8位
            parity=serial.PARITY_NONE,  # 无奇偶校验
            stopbits=serial.STOPBITS_ONE,  # 1个停止位
            timeout=1,              # 读超时时间1秒
            rtscts=True             # 启用RTS/CTS流控
        )

        # 检查串口是否已经打开
        if ser.is_open:
            print("串口已打开，开始定时发送数据...")

        # 开始定时发送数据
        start_sending(ser)

    except serial.SerialException as e:
        print(f"串口通信出错: {e}")
    finally:
        # 关闭串口
        if ser.is_open:
            ser.close()
            print("串口已关闭")

if __name__ == "__main__":
    main()
